package com.zhiyin.seal.service;

import com.zhiyin.seal.entity.bo.*;

import java.util.List;

/**
 * 用印申请服务
 */
public interface ApplyService {

    Boolean addUseSealApply(ApplyBo applyBo);

    ApplyBo getApplyInfo(Long applyId);

    List<ApplyBo> getApplyListByIds(List<Long> applyIdList);

    List<ApplyBo> getStampRecordApplyList(StampSearchParamsBo stampSearchParamsBo);

    List<ContractTypeBo> getContractTypeList();

    List<ContractTypeBo> getCompanyContractList(Long companyId);

    List<ApplyOfMyBo> getAvailableApplyList(Long userId);

    Long getMyApplyTotalCount(ApplySearchParamsBo paramsBo);

    List<ApplyOfMyBo> getMyApplyList(ApplySearchParamsBo paramsBo);

    Long getMyApprovalTotalCount(ApplySearchParamsBo paramsBo);

    List<ApplyOfMyApprovalBo> getMyApprovalList(ApplySearchParamsBo paramsBo);

    Long getMyCCTotalCount(ApplySearchParamsBo paramsBo);

    List<ApplyOfMyCCBo> getMyCCList(ApplySearchParamsBo paramsBo);

    ApplyBo getExpireApplySingle();

    List<PdfTaskBo> getPendingPdfTaskList();

    List<ApplyPhotoBo> getApplyImageList(Long applyId,Integer type);

    Boolean replaceApply(Long applyId,Long userId);

    Boolean revokeApply(Long applyId);

    Boolean approvalApply(ApprovalParamsBo paramsBo);

    Boolean closeApply(Long applyId);

    Boolean getHasMyAvailableApply(Long userId);

    List<Long> getMyAvailableApply();

    Boolean getHasMyApproval(Long userId);

    Boolean updatePdfTaskStatus(Long taskId);

    Boolean updateApplyPdfUrl(Long applyId,String pdfUrl);

    Boolean updateStampPdfUrl(Long applyId,String pdfUrl);

    ApplyDetailBo getApplyDetailInfo(Long applyId);

    List<MyApprovalBo> getWaitApprovalList();

    Boolean updateWaiteApproval(List<Long> idList);

    List<ApprovalSmsBo> getWaitApprovalSms();

    Boolean updateWaitApprovalSms(List<Long> idList);

    List<ApplyNotesBo> getApplyNotesList();

    Boolean updateApplyNotes(List<Long> idList);

    Boolean updateApplyCloseBySealId(Long sealId);
}
